# -*- coding: utf-8 -*-
# @Time    : 2022/10/23 15:50
# @Author  : 限量老
from openpyxl import load_workbook
from django.core.files.uploadedfile import InMemoryUploadedFile
from django.http import HttpResponse
from django.shortcuts import render, redirect

from app01 import models
from app01.utils.pagination分页组件 import Pagination


def depart_list(request):
    """部门列表"""

    # 去数据库中获取库所有部门列表
    queryset = models.Department.objects.all()

    # 分页:
    page_object = Pagination(request, queryset)
    context = {
        'queryset': page_object.page_queryset,
        'page_string': page_object.html()
    }

    return render(request, 'depart_list.html', context)  # 把queryset列表数据带到html中去


def depart_add(request):
    '''添加部门'''
    if request.method == 'GET':
        return render(request, 'depart_add.html')
    # 获取用户post提交过来的数据
    title = request.POST.get('title')  # 接收add页面传过来的 部门名称 框输入的内容

    # 保存到数据库
    models.Department.objects.create(title=title)

    # 重定向回部门列表页面
    return redirect('/depart/list/')


def depart_delete(request):
    '''删除部门'''
    # 获取ID(从列表页面,删除项 取得nid={{ obj.id }})
    nid = request.GET.get('nid')
    # 在数据库中删除
    models.Department.objects.filter(id=nid).delete()
    # 重定向回部门列表页面
    return redirect('/depart/list/')


def depart_edit(request, nid):
    '''修改部门'''
    if request.method == 'GET':
        # 根据nid获取数据
        row_object = models.Department.objects.filter(id=nid).first()
        return render(request, 'depart_edit.html', {'row_object': row_object})

    # 获取用户提交的部门名称
    title = request.POST.get('title')  # 接收add页面传过来的 部门名称 框输入的内容
    # 根据id找到数据库中的数据并进行更新
    models.Department.objects.filter(id=nid).update(title=title)
    # 重定向回部门列表页面
    return redirect('/depart/list/')


def depart_multi(request):
    '''批量上传excel文件 '''
    # 1.获取用户上传的文件对象
    file_object = request.FILES.get('exc')

    # 2.对象传递给openpyxl,由openpyxl读取文件内容
    wb = load_workbook(file_object)
    sheet = wb.worksheets[0]

    # 3.循环获取一行数据
    for row in sheet.iter_rows(min_row=2):
        text = row[0].value

        # 4.添加到数据库:
        exists = models.Department.objects.filter(title=text).exists()  # 判断是否出现重复
        if not exists:
            models.Department.objects.create(title=text)

    return redirect('/depart/list/')




















